package com.tmz.web;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.hibernate.mapping.List;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.tmz.dao.ApuestaDAO;
import com.tmz.dao.ApuestaDAOImpl;
import com.tmz.dao.JornadasDAO;
import com.tmz.dao.JornadasDAOImpl;
import com.tmz.domain.Apuesta;
import com.tmz.domain.Jornada;
import com.tmz.domain.User;
import com.tmz.utils.UsuarioHabilitado;

public class ApuestaAction extends ActionSupport implements ModelDriven<Apuesta>,UsuarioHabilitado,ServletRequestAware {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8176360585013674785L;
	private User user = new User();
	private Apuesta apuesta = new Apuesta();
	//private Jornada jornada = new Jornada();
	private ApuestaDAO apuestaDAO = new ApuestaDAOImpl();
	private JornadasDAO jornadasDAO = new JornadasDAOImpl();
	
	private HttpServletRequest request;
	
	/*public void setJornada(Jornada jornada){
		this.jornada = jornada;
	}*/
	
	public void setUsuario(User usuario) {
		this.user = usuario;
	}
	
	/*public Jornada getJornada() {
		return jornada;
	}*/
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Apuesta getApuesta() {
		return apuesta;
	}

	public void setApuesta(Apuesta apuesta) {
		this.apuesta = apuesta;
	}
	
	public String addApuesta(){
		if (apuesta != null) {
			if (apuesta.getJornada() != null){
				System.out.println("jornada.nu = "	+ apuesta.getJornada().getNumero());
			}else{
				System.out.println("jor = null");
			}
		}
				
		System.out.println("user.name = "+user.getName());
		System.out.println("apuestas:");
		java.util.List<Integer> res_a = new ArrayList<Integer>();
		for (int j = 0; j < 15; j++) {
			String[] rq = request.getParameterValues("resultados_"+j);
			if(rq==null)
				return ERROR;
				
			int res = 0;
			for (int i = 0; i < rq.length; i++) {
				res += Integer.parseInt(rq[i]);
			}
			System.out.println("apuesta for partido "+j+":"+res);
			res_a.add(new Integer(res));
		}
		apuesta.setResultados(res_a);
		apuesta.setUsuario(user);
		apuestaDAO.saveApuesta(apuesta);
		return SUCCESS;
	}
	
	public String getApuestaByJornada(){
		/*System.out.println("recovering apuesta para jornada num "+apuesta.getJornada().getNumero()+ " para el user "+user.getName());
		this.apuesta = apuestaDAO.getApuesta(apuesta.getJornada(), user);
		System.out.println("done");
		System.out.print("recovered data\n");
		if(apuesta.getJornada()!=null){
			System.out.println("jornada[num="+apuesta.getJornada().getNumero()+".partidos="+apuesta.getJornada().get);
		}*/
		System.out.println("jor_id="+apuesta.getJornada().getId());		
		Jornada jor = jornadasDAO.getJornadaById(apuesta.getJornada().getId());
		apuesta.setJornada(jor);
		System.out.println(apuesta.getJornada().getNumero()+" -> "+
				apuesta.getJornada().getPartidos().size()+ " -> "+
				apuesta.getJornada().getApuestas().size()+ " -> "+
				apuesta.getJornada().getFecha());
		
		return SUCCESS;
	}
	
	@Override
	public Apuesta getModel() {
		return apuesta;
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}
	
	public HttpServletRequest getServletRequest(){
	    return request;
	  }	
	

}
